package com.mastercard.assets.web.struts.actions;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.mastercard.assets.MasterCardException;
import com.mastercard.assets.jpa.TblAsset;
import com.mastercard.assets.jpa.TblTipoCuenta;
import com.mastercard.assets.notifications.NotificationUtil;
import com.mastercard.assets.util.MCUtil;
import com.mastercard.assets.util.dao.MasterCardDAO;
import com.mastercard.assets.web.struts.forms.AssetAsignarPaquetesForm;
import com.mastercard.assets.web.util.to.CuentasPaquetesTo;
import com.mastercard.assets.web.util.to.PaqueteTO;
import com.mastercard.assets.web.util.to.UserLogin;
import java.text.SimpleDateFormat;
import java.util.Date;

public class AssetsAsignacionPaquetesRegistrar
	extends
		Action
{
	public ActionForward execute(
							ActionMapping mapping , 
							ActionForm form ,
							HttpServletRequest request , 
							HttpServletResponse response )
		throws 
			IOException , 
			ServletException
	{
		HttpSession session = request.getSession( ) ;
		
		// en caos de null
		if( session == null )
			return mapping.findForward( "noLogin" ) ;
		
		// toma el userLogin
		UserLogin user = ( UserLogin ) session.getAttribute( "UserLogin" ) ;
		int roleId = user.getActualRoleId( ) ;
                
		// en caso de null
		if( user == null )
			return mapping.findForward( "noLogin" ) ;
		
		try
		{
			// convierte el form y toma la clave
			AssetAsignarPaquetesForm f = ( AssetAsignarPaquetesForm ) form ;
                        
                        int cvePais = user.getTblUsuario( ).getTblPais( ).getCvePais( ) ;
			
			// toma la operacion
			int operation = f.getOperation( ) ;
			
			// en caso de 1
			
			if( operation == 1 )
			{
	//			System.out.println( f.getPackageManager( ).getQuantityOfPackage( ) ) ;
	//			System.out.println( f.getPackageManager( ) ) ;
				int[ ] sll = f.getPackageManager( ).getPaquetesAsignadosSLLText( ) ;
				int[ ] slr = f.getPackageManager( ).getPaquetesAsignadosSLRText( ) ;
				int[ ] dll = f.getPackageManager( ).getPaquetesAsignadosDLLText( ) ;
				int[ ] dlr = f.getPackageManager( ).getPaquetesAsignadosDLRText( ) ;
				int[ ] srl = f.getPackageManager( ).getPaquetesAsignadosSRLText( ) ;
				int[ ] srr = f.getPackageManager( ).getPaquetesAsignadosSRRText( ) ;
				int[ ] drl = f.getPackageManager( ).getPaquetesAsignadosDRLText( ) ;
				int[ ] drr = f.getPackageManager( ).getPaquetesAsignadosDRRText( ) ;
				
	//			System.out.println( "sll: " + sll ) ;
				
				if( sll != null )
				{
					
	//				System.out.println( "Entra a sll " + sll.length ) ;
					
					int asignados = 0 ;
					
					for( int i : sll )
					{
	//					System.out.println( "sll: " + sll[ i ] ) ;
						asignados += i ;
					}
					
					PaqueteTO paq = f.getPackageManager( ).getPaqueteSLL( ) ;
					
					// resta
					int res = paq.getCantidad( ) - paq.getAsignadosATipoCuenta( ) - asignados ;
					
//					System.out.println( "Resultado: " + res ) ;
//					System.out.println( "Resultado: " + paq.getCantidad( ) ) ;
//					System.out.println( "Resultado: " + paq.getAsignadosATipoCuenta( ) ) ;
//					System.out.println( "Resultado: " + asignados ) ;
					
					// en caso de que sea -1
					if( res < 0 )
					{
						// agrega el error
						user.setMessageError( MCUtil.messages.getString( "com.mastercard.assets.web.errors.modules.asset.packages.SLLOver" , 0 - res ) ) ;
						
						user.setNextWorkArea( "/WEB-INF/pages/WorkArea/AssetsAsignarPaqueteDesplegarFormulario.jsp" ) ;
						
						request.setAttribute( "ItemFinded" , MasterCardDAO.findAssetById( f.getCveAsset( ) ) ) ;
						request.setAttribute( "AssetAsignarPaquetesForm" , f ) ;
						
	//					System.out.println( "Regresa a errors !!!!!" ) ;
						MasterCardDAO.closeEntityManager( ) ;
						return mapping.findForward( "errors" ) ;
					}
				}
				
				if( slr != null )
				{
					
					int asignados = 0 ;
					
					for( int i : slr )
						asignados += i ;
					
					PaqueteTO paq = f.getPackageManager( ).getPaqueteSLR( ) ;
					
					// resta
					int res = paq.getCantidad( ) - paq.getAsignadosATipoCuenta( ) - asignados ;
					
					// en caso de que sea -1
					if( res < 0 )
					{
						// agrega el error
						user.setMessageError( MCUtil.messages.getString( "com.mastercard.assets.web.errors.modules.asset.packages.SLROver" , 0 - res ) ) ;
						
						user.setNextWorkArea( "/WEB-INF/pages/WorkArea/AssetsAsignarPaqueteDesplegarFormulario.jsp" ) ;
						
						request.setAttribute( "ItemFinded" , MasterCardDAO.findAssetById( f.getCveAsset( ) ) ) ;
						request.setAttribute( "AssetAsignarPaquetesForm" , f ) ;
						
                                                MasterCardDAO.closeEntityManager( ) ;
						return mapping.findForward( "errors" ) ;
					}
				}
				
				if( dll != null )
				{
					
					int asignados = 0 ;
					
					for( int i : dll )
						asignados +=i ;
					
					PaqueteTO paq = f.getPackageManager( ).getPaqueteDLL( ) ;
					
					// resta
					int res = paq.getCantidad( ) - paq.getAsignadosATipoCuenta( ) - asignados ;
                                        
					// en caso de que sea -1
					if( res < 0 )
					{
						// agrega el error
						user.setMessageError( MCUtil.messages.getString( "com.mastercard.assets.web.errors.modules.asset.packages.DLLOver" , 0 - res ) ) ;
						
						user.setNextWorkArea( "/WEB-INF/pages/WorkArea/AssetsAsignarPaqueteDesplegarFormulario.jsp" ) ;
						
						request.setAttribute( "ItemFinded" , MasterCardDAO.findAssetById( f.getCveAsset( ) ) ) ;
						request.setAttribute( "AssetAsignarPaquetesForm" , f ) ;
						
                                                MasterCardDAO.closeEntityManager( ) ;
						return mapping.findForward( "errors" ) ;
					}
				}
				
				if( dlr != null )
				{
					
					int asignados = 0 ;
					
					for( int i : dlr )
						asignados +=i ;
					
					PaqueteTO paq = f.getPackageManager( ).getPaqueteDLR( ) ;
					
					// resta
					int res = paq.getCantidad( ) - paq.getAsignadosATipoCuenta( ) - asignados ;
					
					// en caso de que sea -1
					if( res < 0 )
					{
						// agrega el error
						user.setMessageError( MCUtil.messages.getString( "com.mastercard.assets.web.errors.modules.asset.packages.DLROver" , 0 - res ) ) ;
						
						user.setNextWorkArea( "/WEB-INF/pages/WorkArea/AssetsAsignarPaqueteDesplegarFormulario.jsp" ) ;
						
						request.setAttribute( "ItemFinded" , MasterCardDAO.findAssetById( f.getCveAsset( ) ) ) ;
						request.setAttribute( "AssetAsignarPaquetesForm" , f ) ;
						
                                                MasterCardDAO.closeEntityManager( ) ;
						return mapping.findForward( "errors" ) ;
					}
				}
				
				if( srl != null )
				{
					
					int asignados = 0 ;
					
					for( int i : srl )
						asignados +=i ;
					
					PaqueteTO paq = f.getPackageManager( ).getPaqueteSRL( ) ;
					
					// resta
					int res = paq.getCantidad( ) - paq.getAsignadosATipoCuenta( ) - asignados ;
					
					// en caso de que sea -1
					if( res < 0 )
					{
						// agrega el error
						user.setMessageError( MCUtil.messages.getString( "com.mastercard.assets.web.errors.modules.asset.packages.SRLOver" , 0 - res ) ) ;
						
						user.setNextWorkArea( "/WEB-INF/pages/WorkArea/AssetsAsignarPaqueteDesplegarFormulario.jsp" ) ;
						
						request.setAttribute( "ItemFinded" , MasterCardDAO.findAssetById( f.getCveAsset( ) ) ) ;
						request.setAttribute( "AssetAsignarPaquetesForm" , f ) ;
						
                                                MasterCardDAO.closeEntityManager( ) ;
						return mapping.findForward( "errors" ) ;
					}
				}
				
				if( srr != null )
				{
					
					int asignados = 0 ;
					
					for( int i : srr )
						asignados +=i ;
					
					PaqueteTO paq = f.getPackageManager( ).getPaqueteSRR( ) ;
					
					// resta
					int res = paq.getCantidad( ) - paq.getAsignadosATipoCuenta( ) - asignados ;
					
					// en caso de que sea -1
					if( res < 0 )
					{
						// agrega el error
						user.setMessageError( MCUtil.messages.getString( "com.mastercard.assets.web.errors.modules.asset.packages.SRROver" , 0 - res ) ) ;
						
						user.setNextWorkArea( "/WEB-INF/pages/WorkArea/AssetsAsignarPaqueteDesplegarFormulario.jsp" ) ;
						
						request.setAttribute( "ItemFinded" , MasterCardDAO.findAssetById( f.getCveAsset( ) ) ) ;
						request.setAttribute( "AssetAsignarPaquetesForm" , f ) ;
						
                                                MasterCardDAO.closeEntityManager( ) ;
						return mapping.findForward( "errors" ) ;
					}
				}
				
				if( drl != null )
				{
					
					int asignados = 0 ;
					
					for( int i : drl )
						asignados +=i ;
					
					PaqueteTO paq = f.getPackageManager( ).getPaqueteDRL( ) ;
					
					// resta
					int res = paq.getCantidad( ) - paq.getAsignadosATipoCuenta( ) - asignados ;
					
					// en caso de que sea -1
					if( res < 0 )
					{
						// agrega el error
						user.setMessageError( MCUtil.messages.getString( "com.mastercard.assets.web.errors.modules.asset.packages.DRLOver" , 0 - res ) ) ;
						
						user.setNextWorkArea( "/WEB-INF/pages/WorkArea/AssetsAsignarPaqueteDesplegarFormulario.jsp" ) ;
						
						request.setAttribute( "ItemFinded" , MasterCardDAO.findAssetById( f.getCveAsset( ) ) ) ;
						request.setAttribute( "AssetAsignarPaquetesForm" , f ) ;
						
                                                MasterCardDAO.closeEntityManager( ) ;
						return mapping.findForward( "errors" ) ;
					}
				}
				
				if( drr != null )
				{
					
					int asignados = 0 ;
					
					for( int i : drr )
						asignados += i ;
					
					PaqueteTO paq = f.getPackageManager( ).getPaqueteDRR( ) ;
					
					// resta
					int res = paq.getCantidad( ) - paq.getAsignadosATipoCuenta( ) - asignados ;
					
					// en caso de que sea -1
					if( res < 0 )
					{
						// agrega el error
						user.setMessageError( MCUtil.messages.getString( "com.mastercard.assets.web.errors.modules.asset.packages.DRROver" , 0 - res ) ) ;
						
						user.setNextWorkArea( "/WEB-INF/pages/WorkArea/AssetsAsignarPaqueteDesplegarFormulario.jsp" ) ;
						
						request.setAttribute( "ItemFinded" , MasterCardDAO.findAssetById( f.getCveAsset( ) ) ) ;
						request.setAttribute( "AssetAsignarPaquetesForm" , f ) ;
						
                                                MasterCardDAO.closeEntityManager( ) ;
						return mapping.findForward( "errors" ) ;
					}
				}
				
				/////// da de alta todos los paquetes en los tipos de cuenta.
				int[ ] tipoCuentasId = f.getPackageManager( ).getTipoCuentaIds( ) ;
				
				// toma el asset
				TblAsset asset = MasterCardDAO.findAssetById( f.getCveAsset( ) ) ;
				
				StringBuffer sb = new StringBuffer( ) ;
				
				System.out.println( "sll: " + sll ) ;
				System.out.println( "slr: " + slr ) ;
				System.out.println( "srl: " + srl ) ;
				System.out.println( "srr: " + srr ) ;
				System.out.println( "dll: " + dll ) ;
				System.out.println( "dlr: " + dlr ) ;
				System.out.println( "drl: " + drl ) ;
				System.out.println( "drr: " + drr ) ;
                                List< CuentasPaquetesTo > datoNotificacion = new ArrayList< CuentasPaquetesTo >( ) ;
				// procesa los sll
				if( sll != null && sll.length == tipoCuentasId.length )
				{
					System.out.println( "AssetsAsignacionPaquetesRegistrar.java: tamanio sll/" + sll.length ) ;
					// recorre
					for( int i = 0 ; i < tipoCuentasId.length ; i++ )
					{
						System.out.println( "AssetsAsignacionPaquetesRegistrar.java: i/" + i ) ;
						
						// toma el numero de paquetes a asignar
						int packAsign = sll[ i ] ;
						
						System.out.println( "Cuenta " + tipoCuentasId + " en sll " + packAsign ) ;
						
						// si se trata de agregar
						if( packAsign > 0 )
						{
							// recorre
							for( int j = 0 ; j < packAsign ; j++ )
							{
								// revisa el error
								try
								{
									MasterCardDAO.asignarPaqueteATipoCuenta( asset , tipoCuentasId[ i ] , 1 , 1 , 1 ) ;
									
									// en caso de que haya pasado
									f.getPackageManager( ).getPaqueteSLL( ).addAsignedToCountTypePackage( ) ;
									f.getPackageManager( ).getPaqueteSLL( ).restByAsignToCountTypePackage( ) ;
									f.getPackageManager( ).getPaquetesAsignadosSLL( )[ i ].addAsignedPackage( ) ;
//									f.getPackageManager( ).getPaquetesAsignadosSLLText( )[ i ]-- ;
//									f.getPackageManager( ).getPaquetesAsignadosSLL( )[ i ].addAsignedPackage( ) ;
								}catch( MasterCardException mce )
								{
                                                                    MasterCardDAO.closeEntityManager( ) ;
									sb.append( mce.getSingularMessage( ) + "\n" ) ;
								}
							}
							
							// lanza la alerta
                                                        // PAQUETES=+=ASSET=+=HABITACION=+=TIPOCUENTA
                                                        //ponerQuitar--Paquetes--cuenta--tipo
//							NotificationUtil.throwNotificationTypeToCountType( packAsign , asset , 1 , tipoCuentasId[ i ] ) ;
                                                        if( datoNotificacion.isEmpty( ) ){
                                                            CuentasPaquetesTo n = new CuentasPaquetesTo( packAsign, asset.getCveAsset( ), tipoCuentasId[ i ], 1 ) ;
                                                            datoNotificacion.add( n ) ;
                                                        }else{
                                                            boolean esta = false ;
                                                            for( CuentasPaquetesTo cpt : datoNotificacion ){
                                                                if( cpt.getCuenta( ) == tipoCuentasId[ i ] && cpt.getTipo( ) == 1 ){
                                                                    int suma = cpt.getPonerQuitar( ) + packAsign ;
                                                                    cpt.setPonerQuitar( suma ) ;
                                                                    esta = true ;
                                                                    break ;
                                                                }
                                                            }
                                                            
                                                            if( !esta ){
                                                                CuentasPaquetesTo n = new CuentasPaquetesTo( packAsign, asset.getCveAsset( ), tipoCuentasId[ i ], 1 ) ;
                                                                datoNotificacion.add( n ) ;
                                                            }
                                                        }
						}
						// si se trata de regresar paquetes (numero negativo)
						else if( packAsign < 0 )
						{
							int numNoNeg = 0 - packAsign ;
							
							// revisa el error
							try
							{
								System.out.println( "AssetsAsignacionPaquetesRegistrar 1 : " + tipoCuentasId[ i ] ) ;
								MasterCardDAO.regresarPaqueteATipoCuenta( asset , tipoCuentasId[ i ] , 1 , 1 , 1 , numNoNeg ) ;
								
								// en caso de que haya pasado
								f.getPackageManager( ).getPaqueteSLL( ).restAsignedToCountTypePackage( numNoNeg ) ;
								f.getPackageManager( ).getPaqueteSLL( ).addByAsignToCountTypePackage( numNoNeg ) ;
								f.getPackageManager( ).getPaquetesAsignadosSLL( )[ i ].restAsignedPackage( numNoNeg ) ;
//									f.getPackageManager( ).getPaquetesAsignadosSLLText( )[ i ]-- ;
//									f.getPackageManager( ).getPaquetesAsignadosSLL( )[ i ].addAsignedPackage( ) ;
							}catch( MasterCardException mce )
							{
                                                            MasterCardDAO.closeEntityManager( ) ;
								sb.append( mce.getSingularMessage( ) + "\n" ) ;
							}
						}
						
					}
				}
				
				// procesa los slr
				if( slr != null && slr.length == tipoCuentasId.length )
				{
					// recorre
					for( int i = 0 ; i < tipoCuentasId.length ; i++ )
					{
						// toma el numero de paquetes a asignar
						int packAsign = slr[ i ] ;
						
						System.out.println( "Cuenta " + tipoCuentasId + " en slr " + packAsign ) ;
						
						if( packAsign > 0 )
						{
							// recorre
							for( int j = 0 ; j < packAsign ; j++ )
							{
								// revisa el error
								try
								{
									MasterCardDAO.asignarPaqueteATipoCuenta( asset , tipoCuentasId[ i ] , 1 , 1 , 2 ) ;
									
//									// en caso de que haya pasado
									f.getPackageManager( ).getPaqueteSLR( ).addAsignedToCountTypePackage( ) ;
									f.getPackageManager( ).getPaqueteSLR( ).restByAsignToCountTypePackage( ) ;
									f.getPackageManager( ).getPaquetesAsignadosSLR( )[ i ].addAsignedPackage( ) ;
//									f.getPackageManager( ).getPaquetesAsignadosSLRText( )[ i ]-- ;
//									f.getPackageManager( ).getPaquetesAsignadosSLR( )[ i ].addAsignedPackage( ) ;
								}catch( MasterCardException mce )
								{
                                                                    MasterCardDAO.closeEntityManager( ) ;
									sb.append( mce.getSingularMessage( ) + "\n" ) ;
								}
							}
							
							// lanza la alerta
                                                        // PAQUETES=+=ASSET=+=HABITACION=+=TIPOCUENTA
                                                        //ponerQuitar--Paquetes--cuenta--tipo
//							NotificationUtil.throwNotificationTypeToCountType( packAsign , asset , 1 , tipoCuentasId[ i ] ) ;                                                        
                                                        if( datoNotificacion.isEmpty( ) ){
                                                            CuentasPaquetesTo n = new CuentasPaquetesTo( packAsign, asset.getCveAsset( ), tipoCuentasId[ i ], 1 ) ;
                                                            datoNotificacion.add( n ) ;
                                                        }else{
                                                            boolean esta = false ;
                                                            for( CuentasPaquetesTo cpt : datoNotificacion ){
                                                                if( cpt.getCuenta( ) == tipoCuentasId[ i ] && cpt.getTipo( ) == 1 ){
                                                                    int suma = cpt.getPonerQuitar( ) + packAsign ;
                                                                    cpt.setPonerQuitar( suma ) ;
                                                                    esta = true ;
                                                                    break ;
                                                                }
                                                            }
                                                            
                                                            if( !esta ){
                                                                CuentasPaquetesTo n = new CuentasPaquetesTo( packAsign, asset.getCveAsset( ), tipoCuentasId[ i ], 1 ) ;
                                                                datoNotificacion.add( n ) ;
                                                            }
                                                        }
						}
						// si se trata de regresar paquetes (numero negativo)
						else if( packAsign < 0 )
						{
							int numNoNeg = 0 - packAsign ;
							
							System.out.println( ) ;
							
							// revisa el error
							try
							{
								MasterCardDAO.regresarPaqueteATipoCuenta( asset , tipoCuentasId[ i ] , 1 , 1 , 2 , numNoNeg ) ;
								
								// en caso de que haya pasado
								f.getPackageManager( ).getPaqueteSLR( ).restAsignedToCountTypePackage( numNoNeg ) ;
								f.getPackageManager( ).getPaqueteSLR( ).addByAsignToCountTypePackage( numNoNeg ) ;
								f.getPackageManager( ).getPaquetesAsignadosSLR( )[ i ].restAsignedPackage( numNoNeg ) ;
//									f.getPackageManager( ).getPaquetesAsignadosSLLText( )[ i ]-- ;
//									f.getPackageManager( ).getPaquetesAsignadosSLL( )[ i ].addAsignedPackage( ) ;
							}catch( MasterCardException mce )
							{
                                                            MasterCardDAO.closeEntityManager( ) ;
								sb.append( mce.getSingularMessage( ) + "\n" ) ;
							}
						}
					}
				}
				
				// procesa los dll
				if( dll != null && dll.length == tipoCuentasId.length )
				{
					// recorre
					for( int i = 0 ; i < tipoCuentasId.length ; i++ )
					{
						// toma el numero de paquetes a asignar
						int packAsign = dll[ i ] ;
						
						System.out.println( "Cuenta " + tipoCuentasId + " en dll " + packAsign ) ;
						
						if( packAsign > 0 )
						{
							// recorre
							for( int j = 0 ; j < packAsign ; j++ )
							{
								// revisa el error
								try
								{
									MasterCardDAO.asignarPaqueteATipoCuenta( asset , tipoCuentasId[ i ] , 2 , 1 , 1 ) ;
									
									// en caso de que haya pasado
									f.getPackageManager( ).getPaqueteDLL( ).addAsignedToCountTypePackage( ) ;
									f.getPackageManager( ).getPaqueteDLL( ).restByAsignToCountTypePackage( ) ;
									f.getPackageManager( ).getPaquetesAsignadosDLL( )[ i ].addAsignedPackage( ) ;
//									f.getPackageManager( ).getPaquetesAsignadosDLLText( )[ i ]-- ;
//									f.getPackageManager( ).getPaquetesAsignadosDLL( )[ i ].addAsignedPackage( ) ;
								}catch( MasterCardException mce )
								{
                                                                    MasterCardDAO.closeEntityManager( ) ;
									sb.append( mce.getSingularMessage( ) + "\n" ) ;
								}
							}
							
							// lanza la alerta
                                                        // PAQUETES=+=ASSET=+=HABITACION=+=TIPOCUENTA
                                                        //ponerQuitar--Paquetes--cuenta--tipo
//							NotificationUtil.throwNotificationTypeToCountType( packAsign , asset , 2 , tipoCuentasId[ i ] ) ;                                                        
                                                        if( datoNotificacion.isEmpty( ) ){
                                                            CuentasPaquetesTo n = new CuentasPaquetesTo( packAsign, asset.getCveAsset( ), tipoCuentasId[ i ], 2 ) ;
                                                            datoNotificacion.add( n ) ;
                                                        }else{
                                                            boolean esta = false ;
                                                            for( CuentasPaquetesTo cpt : datoNotificacion ){
                                                                if( cpt.getCuenta( ) == tipoCuentasId[ i ] && cpt.getTipo( ) == 2 ){
                                                                    int suma = cpt.getPonerQuitar( ) + packAsign ;
                                                                    cpt.setPonerQuitar( suma ) ;
                                                                    esta = true ;
                                                                    break ;
                                                                }
                                                            }
                                                            
                                                            if( !esta ){
                                                                CuentasPaquetesTo n = new CuentasPaquetesTo( packAsign, asset.getCveAsset( ), tipoCuentasId[ i ], 2 ) ;
                                                                datoNotificacion.add( n ) ;
                                                            }
                                                        }
						}
						// si se trata de regresar paquetes (numero negativo)
						else if( packAsign < 0 )
						{
							int numNoNeg = 0 - packAsign ;
							
							System.out.println( ) ;
							
							// revisa el error
							try
							{
								MasterCardDAO.regresarPaqueteATipoCuenta( asset , tipoCuentasId[ i ] , 2 , 1 , 1 , numNoNeg ) ;
								
								// en caso de que haya pasado
								f.getPackageManager( ).getPaqueteDLL( ).restAsignedToCountTypePackage( numNoNeg ) ;
								f.getPackageManager( ).getPaqueteDLL( ).addByAsignToCountTypePackage( numNoNeg ) ;
								f.getPackageManager( ).getPaquetesAsignadosDLL( )[ i ].restAsignedPackage( numNoNeg ) ;
//									f.getPackageManager( ).getPaquetesAsignadosSLLText( )[ i ]-- ;
//									f.getPackageManager( ).getPaquetesAsignadosSLL( )[ i ].addAsignedPackage( ) ;
							}catch( MasterCardException mce )
							{
                                                            MasterCardDAO.closeEntityManager( ) ;
								sb.append( mce.getSingularMessage( ) + "\n" ) ;
							}
						}
					}
				}
				
				// procesa los dlr
				if( dlr != null && dlr.length == tipoCuentasId.length )
				{
					// recorre
					for( int i = 0 ; i < tipoCuentasId.length ; i++ )
					{
						// toma el numero de paquetes a asignar
						int packAsign = dlr[ i ] ;
						
						System.out.println( "Cuenta " + tipoCuentasId + " en dlr " + packAsign ) ;
						
						if( packAsign > 0 )
						{
							// recorre
							for( int j = 0 ; j < packAsign ; j++ )
							{
								// revisa el error
								try
								{
									MasterCardDAO.asignarPaqueteATipoCuenta( asset , tipoCuentasId[ i ] , 2 , 1 , 2 ) ;
									
									// en caso de que haya pasado
									f.getPackageManager( ).getPaqueteDLR( ).addAsignedToCountTypePackage( ) ;
									f.getPackageManager( ).getPaqueteDLR( ).restByAsignToCountTypePackage( ) ;
									f.getPackageManager( ).getPaquetesAsignadosDLR( )[ i ].addAsignedPackage( ) ;
//									f.getPackageManager( ).getPaquetesAsignadosDLRText( )[ i ]-- ;
//									f.getPackageManager( ).getPaquetesAsignadosDLR( )[ i ].addAsignedPackage( ) ;
									
								}catch( MasterCardException mce )
								{
                                                                    MasterCardDAO.closeEntityManager( ) ;
									sb.append( mce.getSingularMessage( ) + "\n" ) ;
								}
							}
							
							// lanza la alerta
                                                        // PAQUETES=+=ASSET=+=HABITACION=+=TIPOCUENTA
                                                        //ponerQuitar--Paquetes--cuenta--tipo
//							NotificationUtil.throwNotificationTypeToCountType( packAsign , asset , 2 , tipoCuentasId[ i ] ) ;
                                                        if( datoNotificacion.isEmpty( ) ){
                                                            CuentasPaquetesTo n = new CuentasPaquetesTo( packAsign, asset.getCveAsset( ), tipoCuentasId[ i ], 2 ) ;
                                                            datoNotificacion.add( n ) ;
                                                        }else{
                                                            boolean esta = false ;
                                                            for( CuentasPaquetesTo cpt : datoNotificacion ){
                                                                if( cpt.getCuenta( ) == tipoCuentasId[ i ] && cpt.getTipo( ) == 2 ){
                                                                    int suma = cpt.getPonerQuitar( ) + packAsign ;
                                                                    cpt.setPonerQuitar( suma ) ;
                                                                    esta = true ;
                                                                    break ;
                                                                }
                                                            }
                                                            
                                                            if( !esta ){
                                                                CuentasPaquetesTo n = new CuentasPaquetesTo( packAsign, asset.getCveAsset( ), tipoCuentasId[ i ], 2 ) ;
                                                                datoNotificacion.add( n ) ;
                                                            }
                                                        }
						}
						// si se trata de regresar paquetes (numero negativo)
						else if( packAsign < 0 )
						{
							int numNoNeg = 0 - packAsign ;
							
							System.out.println( ) ;
							
							// revisa el error
							try
							{
								MasterCardDAO.regresarPaqueteATipoCuenta( asset , tipoCuentasId[ i ] , 2 , 1 , 2 , numNoNeg ) ;
								
								// en caso de que haya pasado
								f.getPackageManager( ).getPaqueteDLR( ).restAsignedToCountTypePackage( numNoNeg ) ;
								f.getPackageManager( ).getPaqueteDLR( ).addByAsignToCountTypePackage( numNoNeg ) ;
								f.getPackageManager( ).getPaquetesAsignadosDLR( )[ i ].restAsignedPackage( numNoNeg ) ;
//									f.getPackageManager( ).getPaquetesAsignadosSLLText( )[ i ]-- ;
//									f.getPackageManager( ).getPaquetesAsignadosSLL( )[ i ].addAsignedPackage( ) ;
							}catch( MasterCardException mce )
							{
                                                            MasterCardDAO.closeEntityManager( ) ;
								sb.append( mce.getSingularMessage( ) + "\n" ) ;
							}
						}
					}
				}
				
				// procesa los srl
				if( srl != null && srl.length == tipoCuentasId.length )
				{
					// recorre
					for( int i = 0 ; i < tipoCuentasId.length ; i++ )
					{
						// toma el numero de paquetes a asignar
						int packAsign = srl[ i ] ;
						
						System.out.println( "Cuenta " + tipoCuentasId + " en srl " + packAsign ) ;
						
						if( packAsign > 0 )
						{
							// recorre
							for( int j = 0 ; j < packAsign ; j++ )
							{
								// revisa el error
								try
								{
									MasterCardDAO.asignarPaqueteATipoCuenta( asset , tipoCuentasId[ i ] , 1 , 2 , 1 ) ;
									
									// en caso de que haya pasado
									f.getPackageManager( ).getPaqueteSRL( ).addAsignedToCountTypePackage( ) ;
									f.getPackageManager( ).getPaqueteSRL( ).restByAsignToCountTypePackage( ) ;
									f.getPackageManager( ).getPaquetesAsignadosSRL( )[ i ].addAsignedPackage( ) ;
//									f.getPackageManager( ).getPaquetesAsignadosSRLText( )[ i ]-- ;
//									f.getPackageManager( ).getPaquetesAsignadosSRL( )[ i ].addAsignedPackage( ) ;
								}catch( MasterCardException mce )
								{
                                                                    MasterCardDAO.closeEntityManager( ) ;
									sb.append( mce.getSingularMessage( ) + "\n" ) ;
								}
							}
							
							// lanza la alerta
                                                        // PAQUETES=+=ASSET=+=HABITACION=+=TIPOCUENTA
                                                        //ponerQuitar--Paquetes--cuenta--tipo
//							NotificationUtil.throwNotificationTypeToCountType( packAsign , asset , 1 , tipoCuentasId[ i ] ) ;
                                                        if( datoNotificacion.isEmpty( ) ){
                                                            CuentasPaquetesTo n = new CuentasPaquetesTo( packAsign, asset.getCveAsset( ), tipoCuentasId[ i ], 1 ) ;
                                                            datoNotificacion.add( n ) ;
                                                        }else{
                                                            boolean esta = false ;
                                                            for( CuentasPaquetesTo cpt : datoNotificacion ){
                                                                if( cpt.getCuenta( ) == tipoCuentasId[ i ] && cpt.getTipo( ) == 1 ){
                                                                    int suma = cpt.getPonerQuitar( ) + packAsign ;
                                                                    cpt.setPonerQuitar( suma ) ;
                                                                    esta = true ;
                                                                    break ;
                                                                }
                                                            }
                                                            
                                                            if( !esta ){
                                                                CuentasPaquetesTo n = new CuentasPaquetesTo( packAsign, asset.getCveAsset( ), tipoCuentasId[ i ], 1 ) ;
                                                                datoNotificacion.add( n ) ;
                                                            }
                                                        }
						}
						// si se trata de regresar paquetes (numero negativo)
						else if( packAsign < 0 )
						{
							int numNoNeg = 0 - packAsign ;
							
							System.out.println( ) ;
							
							// revisa el error
							try
							{
								MasterCardDAO.regresarPaqueteATipoCuenta( asset , tipoCuentasId[ i ] , 1 , 2 , 1 , numNoNeg ) ;
								
								// en caso de que haya pasado
								f.getPackageManager( ).getPaqueteSRL( ).restAsignedToCountTypePackage( numNoNeg ) ;
								f.getPackageManager( ).getPaqueteSRL( ).addByAsignToCountTypePackage( numNoNeg ) ;
								f.getPackageManager( ).getPaquetesAsignadosSRL( )[ i ].restAsignedPackage( numNoNeg ) ;
//									f.getPackageManager( ).getPaquetesAsignadosSLLText( )[ i ]-- ;
//									f.getPackageManager( ).getPaquetesAsignadosSLL( )[ i ].addAsignedPackage( ) ;
							}catch( MasterCardException mce )
							{
                                                            MasterCardDAO.closeEntityManager( ) ;
								sb.append( mce.getSingularMessage( ) + "\n" ) ;
							}
						}
					}
				}
				
				// procesa los srr
				if( srr != null && srr.length == tipoCuentasId.length )
				{
					// recorre
					for( int i = 0 ; i < tipoCuentasId.length ; i++ )
					{
						// toma el numero de paquetes a asignar
						int packAsign = srr[ i ] ;
						
						System.out.println( "Cuenta " + tipoCuentasId + " en srr " + packAsign ) ;
						
						if( packAsign > 0 )
						{
							// recorre
							for( int j = 0 ; j < packAsign ; j++ )
							{
								// revisa el error
								try
								{
									MasterCardDAO.asignarPaqueteATipoCuenta( asset , tipoCuentasId[ i ] , 1 , 2 , 2 ) ;
									
									// en caso de que haya pasado
									f.getPackageManager( ).getPaqueteSRR( ).addAsignedToCountTypePackage( ) ;
									f.getPackageManager( ).getPaqueteSRR( ).restByAsignToCountTypePackage( ) ;
									f.getPackageManager( ).getPaquetesAsignadosSRR( )[ i ].addAsignedPackage( ) ;
//									f.getPackageManager( ).getPaquetesAsignadosSRRText( )[ i ]-- ;
//									f.getPackageManager( ).getPaquetesAsignadosSRR( )[ i ].addAsignedPackage( ) ;
								}catch( MasterCardException mce )
								{
                                                                    MasterCardDAO.closeEntityManager( ) ;
									sb.append( mce.getSingularMessage( ) + "\n" ) ;
								}
							}
							
							// lanza la alerta
                                                        // PAQUETES=+=ASSET=+=HABITACION=+=TIPOCUENTA
                                                        //ponerQuitar--Paquetes--cuenta--tipo
//							NotificationUtil.throwNotificationTypeToCountType( packAsign , asset , 1 , tipoCuentasId[ i ] ) ;
                                                        if( datoNotificacion.isEmpty( ) ){
                                                            CuentasPaquetesTo n = new CuentasPaquetesTo( packAsign, asset.getCveAsset( ), tipoCuentasId[ i ], 1 ) ;
                                                            datoNotificacion.add( n ) ;
                                                        }else{
                                                            boolean esta = false ;
                                                            for( CuentasPaquetesTo cpt : datoNotificacion ){
                                                                if( cpt.getCuenta( ) == tipoCuentasId[ i ] && cpt.getTipo( ) == 1 ){
                                                                    int suma = cpt.getPonerQuitar( ) + packAsign ;
                                                                    cpt.setPonerQuitar( suma ) ;
                                                                    esta = true ;
                                                                    break ;
                                                                }
                                                            }
                                                            
                                                            if( !esta ){
                                                                CuentasPaquetesTo n = new CuentasPaquetesTo( packAsign, asset.getCveAsset( ), tipoCuentasId[ i ], 1 ) ;
                                                                datoNotificacion.add( n ) ;
                                                            }
                                                        }
						}
						// si se trata de regresar paquetes (numero negativo)
						else if( packAsign < 0 )
						{
							int numNoNeg = 0 - packAsign ;
							
							System.out.println( ) ;
							
							// revisa el error
							try
							{
								MasterCardDAO.regresarPaqueteATipoCuenta( asset , tipoCuentasId[ i ] , 1 , 2 , 2 , numNoNeg ) ;
								
								// en caso de que haya pasado
								f.getPackageManager( ).getPaqueteSRR( ).restAsignedToCountTypePackage( numNoNeg ) ;
								f.getPackageManager( ).getPaqueteSRR( ).addByAsignToCountTypePackage( numNoNeg ) ;
								f.getPackageManager( ).getPaquetesAsignadosSRR( )[ i ].restAsignedPackage( numNoNeg ) ;
//									f.getPackageManager( ).getPaquetesAsignadosSLLText( )[ i ]-- ;
//									f.getPackageManager( ).getPaquetesAsignadosSLL( )[ i ].addAsignedPackage( ) ;
							}catch( MasterCardException mce )
							{
                                                            MasterCardDAO.closeEntityManager( ) ;
								sb.append( mce.getSingularMessage( ) + "\n" ) ;
							}
						}
					}
				}
				
				// procesa los drl
				if( drl != null && drl.length == tipoCuentasId.length )
				{
					// recorre
					for( int i = 0 ; i < tipoCuentasId.length ; i++ )
					{
						// toma el numero de paquetes a asignar
						int packAsign = drl[ i ] ;
						
						System.out.println( "Cuenta " + tipoCuentasId + " en drl " + packAsign ) ;
						
						if( packAsign > 0 )
						{
							// recorre
							for( int j = 0 ; j < packAsign ; j++ )
							{
								// revisa el error
								try
								{
									MasterCardDAO.asignarPaqueteATipoCuenta( asset , tipoCuentasId[ i ] , 2 , 2 , 1 ) ;
									
									// en caso de que haya pasado
									f.getPackageManager( ).getPaqueteDRL( ).addAsignedToCountTypePackage( ) ;
									f.getPackageManager( ).getPaqueteDRL( ).restByAsignToCountTypePackage( ) ;
									f.getPackageManager( ).getPaquetesAsignadosDRL( )[ i ].addAsignedPackage( ) ;
//									f.getPackageManager( ).getPaquetesAsignadosDRLText( )[ i ]-- ;
//									f.getPackageManager( ).getPaquetesAsignadosDRL( )[ i ].addAsignedPackage( ) ;
								}catch( MasterCardException mce )
								{
                                                                    MasterCardDAO.closeEntityManager( ) ;
									sb.append( mce.getSingularMessage( ) + "\n" ) ;
								}
							}
							
							// lanza la alerta
                                                        // PAQUETES=+=ASSET=+=HABITACION=+=TIPOCUENTA
                                                        //ponerQuitar--Paquetes--cuenta--tipo
//							NotificationUtil.throwNotificationTypeToCountType( packAsign , asset , 2 , tipoCuentasId[ i ] ) ;
                                                        if( datoNotificacion.isEmpty( ) ){
                                                            CuentasPaquetesTo n = new CuentasPaquetesTo( packAsign, asset.getCveAsset( ), tipoCuentasId[ i ], 2 ) ;
                                                            datoNotificacion.add( n ) ;
                                                        }else{
                                                            boolean esta = false ;
                                                            for( CuentasPaquetesTo cpt : datoNotificacion ){
                                                                if( cpt.getCuenta( ) == tipoCuentasId[ i ] && cpt.getTipo( ) == 2 ){
                                                                    int suma = cpt.getPonerQuitar( ) + packAsign ;
                                                                    cpt.setPonerQuitar( suma ) ;
                                                                    esta = true ;
                                                                    break ;
                                                                }
                                                            }
                                                            
                                                            if( !esta ){
                                                                CuentasPaquetesTo n = new CuentasPaquetesTo( packAsign, asset.getCveAsset( ), tipoCuentasId[ i ], 2 ) ;
                                                                datoNotificacion.add( n ) ;
                                                            }
                                                        }
						}
						// si se trata de regresar paquetes (numero negativo)
						else if( packAsign < 0 )
						{
							int numNoNeg = 0 - packAsign ;
							
							System.out.println( ) ;
							
							// revisa el error
							try
							{
								MasterCardDAO.regresarPaqueteATipoCuenta( asset , tipoCuentasId[ i ] , 2 , 2 , 1 , numNoNeg ) ;
								
								// en caso de que haya pasado
								f.getPackageManager( ).getPaqueteDRL( ).restAsignedToCountTypePackage( numNoNeg ) ;
								f.getPackageManager( ).getPaqueteDRL( ).addByAsignToCountTypePackage( numNoNeg ) ;
								f.getPackageManager( ).getPaquetesAsignadosDRL( )[ i ].restAsignedPackage( numNoNeg ) ;
//									f.getPackageManager( ).getPaquetesAsignadosSLLText( )[ i ]-- ;
//									f.getPackageManager( ).getPaquetesAsignadosSLL( )[ i ].addAsignedPackage( ) ;
							}catch( MasterCardException mce )
							{
                                                            MasterCardDAO.closeEntityManager( ) ;
								sb.append( mce.getSingularMessage( ) + "\n" ) ;
							}
						}
					}
				}
				
				// procesa los drr
				if( drr != null && drr.length == tipoCuentasId.length )
				{
					// recorre
					for( int i = 0 ; i < tipoCuentasId.length ; i++ )
					{
						// toma el numero de paquetes a asignar
						int packAsign = drr[ i ] ;
						
						System.out.println( "Cuenta " + tipoCuentasId + " en drr " + packAsign ) ;
						
						if( packAsign > 0 )
						{
							// recorre
							for( int j = 0 ; j < packAsign ; j++ )
							{
								// revisa el error
								try
								{
									MasterCardDAO.asignarPaqueteATipoCuenta( asset , tipoCuentasId[ i ] , 2 , 2 , 2 ) ;
									
									// en caso de que haya pasado
									f.getPackageManager( ).getPaqueteDRR( ).addAsignedToCountTypePackage( ) ;
									f.getPackageManager( ).getPaqueteDRR( ).restByAsignToCountTypePackage( ) ;
									f.getPackageManager( ).getPaquetesAsignadosDRR( )[ i ].addAsignedPackage( ) ;
//									f.getPackageManager( ).getPaquetesAsignadosDRRText( )[ i ]-- ;
//									f.getPackageManager( ).getPaquetesAsignadosDRR( )[ i ].addAsignedPackage( ) ;
								}catch( MasterCardException mce )
								{
                                                                    MasterCardDAO.closeEntityManager( ) ;
									sb.append( mce.getSingularMessage( ) + "\n" ) ;
								}
							}
							
							// lanza la alerta
                                                        // PAQUETES=+=ASSET=+=HABITACION=+=TIPOCUENTA
                                                        //ponerQuitar--Paquetes--cuenta--tipo
//							NotificationUtil.throwNotificationTypeToCountType( packAsign , asset , 2 , tipoCuentasId[ i ] ) ;
                                                        if( datoNotificacion.isEmpty( ) ){
                                                            CuentasPaquetesTo n = new CuentasPaquetesTo( packAsign, asset.getCveAsset( ), tipoCuentasId[ i ], 2 ) ;
                                                            datoNotificacion.add( n ) ;
                                                        }else{
                                                            boolean esta = false ;
                                                            for( CuentasPaquetesTo cpt : datoNotificacion ){
                                                                if( cpt.getCuenta( ) == tipoCuentasId[ i ] && cpt.getTipo( ) == 2 ){
                                                                    int suma = cpt.getPonerQuitar( ) + packAsign ;
                                                                    cpt.setPonerQuitar( suma ) ;
                                                                    esta = true ;
                                                                    break ;
                                                                }
                                                            }
                                                            
                                                            if( !esta ){
                                                                CuentasPaquetesTo n = new CuentasPaquetesTo( packAsign, asset.getCveAsset( ), tipoCuentasId[ i ], 2 ) ;
                                                                datoNotificacion.add( n ) ;
                                                            }
                                                        }
						}
						// si se trata de regresar paquetes (numero negativo)
						else if( packAsign < 0 )
						{
							int numNoNeg = 0 - packAsign ;
							
							System.out.println( ) ;
							
							// revisa el error
							try
							{
								MasterCardDAO.regresarPaqueteATipoCuenta( asset , tipoCuentasId[ i ] , 2 , 2 , 2 , numNoNeg ) ;
								
								// en caso de que haya pasado
								f.getPackageManager( ).getPaqueteDRR( ).restAsignedToCountTypePackage( numNoNeg ) ;
								f.getPackageManager( ).getPaqueteDRR( ).addByAsignToCountTypePackage( numNoNeg ) ;
								f.getPackageManager( ).getPaquetesAsignadosDRR( )[ i ].restAsignedPackage( numNoNeg ) ;
//									f.getPackageManager( ).getPaquetesAsignadosSLLText( )[ i ]-- ;
//									f.getPackageManager( ).getPaquetesAsignadosSLL( )[ i ].addAsignedPackage( ) ;
							}catch( MasterCardException mce )
							{
                                                            MasterCardDAO.closeEntityManager( ) ;
								sb.append( mce.getSingularMessage( ) + "\n" ) ;
							}
						}
					}
				}
                                
                                // PAQUETES=+=ASSET=+=HABITACION=+=TIPOCUENTA
                                //ponerQuitar--Paquetes--cuenta--tipo
                                for( CuentasPaquetesTo cpt : datoNotificacion ){
                                    TblAsset ast = MasterCardDAO.getAsset( cpt.getPaquetes( ) ) ;
                                    NotificationUtil.throwNotificationTypeToCountType( cpt.getPonerQuitar( ), ast , cpt.getTipo( ) , cpt.getCuenta( ) ) ;
                                }
				
				// en caso de que haya errores
	//			if( sb.length( ) > 0 )
	//			{
				// regresa la misma pantalla
				// agrega el error
				user.setMessageError( sb.toString( ) ) ;
				
				sb.setLength( 0 ) ;
				
				user.setNextWorkArea( "/WEB-INF/pages/WorkArea/AssetsAsignarPaqueteDesplegarFormulario.jsp" ) ;
				
//				f.getPackageManager( ).setCveAsset( asset.getCveAsset( ) ) ;
//				
				request.setAttribute( "ItemFinded" , asset ) ;
                                if( user.getActualRoleId( ) == 2 ){
                                                        
                            // coloca los tipos de cuenta existentes para el pais
                            List< TblTipoCuenta > tipoCuentas = MasterCardDAO.getAllActiveCountTypesByCountry( cvePais ) ;
                            f.getPackageManager( ).setCountTypes( tipoCuentas ) ;
                            
                        }
                                
				request.setAttribute( "AssetAsignarPaquetesForm" , f ) ;
				
                                MasterCardDAO.closeEntityManager( ) ;
				return mapping.findForward( "errors" ) ;
	//			}
			}// termina operacion 1
			
			// en caso de que nos digan que quiere editar el asset
			if( operation == 2 )
			{
				// siguiente area
				user.setNextWorkArea( "/AssetsEditarIn.do?cveAsset=" + f.getCveAsset( ) ) ;
			}
			// en caso de que quiera regresar al listado de asset
			if( operation == 3 )
			{
				// siguiente area
				user.setNextWorkArea( "/AssetsDetalleIn.do?cveAsset=" + f.getCveAsset( ) ) ;
			}
			// en caso de que quiera regresar al listado de asset
			if( operation == 4 )
			{
				// siguiente area
//                                if(roleId==6){
//                                    user.setNextWorkArea( "/WEB-INF/pages/WorkArea/AssetsIndexRegional.jsp" ) ;
//                                }else{
                                    user.setNextWorkArea( "/WEB-INF/pages/WorkArea/AssetsIndex.jsp" ) ;
//                                }
                                
				try
				{
//					request.setAttribute( "Assets" , MasterCardDAO.getAllActiveAssets( ) ) ;
                                        List< TblAsset > allAssets = MasterCardDAO.getAllActiveAssetsByPais( cvePais ) ;
                        
                        List< TblAsset > oldAssets = new ArrayList< TblAsset >( ) , postAssets  = new ArrayList< TblAsset >( ) ;
                        SimpleDateFormat formato = new SimpleDateFormat("yyyyMMdd") ;
                        // toma la fecha actual
                        Date fec = new Date();                        
                        String cadenaFecha = formato.format(fec);
                        int fecActual = Integer.parseInt( cadenaFecha ) , AssetFec ;
                        String fe ;
                        
                        for ( TblAsset n : allAssets ){
                            Date fecAsset = n.getFecha() ;
                            fe = formato.format(fecAsset) ;
                            AssetFec = Integer.parseInt( fe ) ;
                            
                            if ( fecActual > AssetFec  ){
                                oldAssets.add( n ) ;
                            }else{
                                postAssets.add( n ) ;
                            }
                            
                        }
			
                        System.out.println( "anterior::: " + oldAssets.size() + " Actual::: " + postAssets.size() ) ;
			request.setAttribute( "Assets" , allAssets ) ;
                        request.setAttribute( "antAssets" , oldAssets ) ;
                        request.setAttribute( "postAssets" , postAssets ) ;
				
					user.clearMessageError( ) ;
				}catch( Exception e )
				{
//					e.printStackTrace( ) ;
					request.setAttribute( "Assets" , new ArrayList< TblAsset >( ) ) ;
				}
				
                                MasterCardDAO.closeEntityManager( ) ;
				return mapping.findForward( "errors" ) ;
			}
			// en caso de que quiera regresar al listado de asset
			if( operation == 5 )
			{
				// siguiente area
				user.setNextWorkArea( "/AssetsModificarPaquetesIn.do?cveAsset=" + f.getCveAsset( ) ) ;
			}
		}catch( Exception e )
		{
                    MasterCardDAO.closeEntityManager( ) ;
			e.printStackTrace( ) ;
			user.setMessageError( e.getMessage( ) ) ;
		}
		
                MasterCardDAO.closeEntityManager( ) ;
	  	return mapping.findForward( "success" ) ;
	}
	
}
